package com.wulis.generator.code;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.wulis.generator.config.DatasourceConfig;
import com.wulis.generator.config.GeneratorGlobalConfig;
import com.wulis.generator.config.ProjectConfig;
import lombok.extern.slf4j.Slf4j;

/**
 * mybatis-plus代码生成器配置
 *
 * @author : WuliBao
 */
@Slf4j
public class DeleteReqGenerator {
    /**
     * 代码生成配置
     *
     * @param datasourceConfig datasourceConfig
     * @param projectConfig 项目配置
     * @param tableNames 表名
     * @param tablePrefix 过滤前缀
     * @return FastAutoGenerator
     */
    public static FastAutoGenerator config(DatasourceConfig datasourceConfig, ProjectConfig projectConfig,
        String[] tableNames, String[] tablePrefix) {
        return GeneratorGlobalConfig.get(datasourceConfig, projectConfig)
            // 包配置
            .packageConfig(builder -> builder
                // 设置父包名
                .parent(projectConfig.getPackageName())
                // 设置父包模块名
                .moduleName(projectConfig.getFunctionModule())
                // Entity包名
                .entity("model.request"))
            // 设置需要生成的表名
            .strategyConfig(builder -> builder
                // 表名
                .addInclude(tableNames)
                // 设置过滤表前缀
                .addTablePrefix(tablePrefix)
                // entity配置
                .entityBuilder()
                // 关闭生成序列化字段
                .disableSerialVersionUID()
                // 请求名称
                .formatFileName("%sDeleteReq")
                // 覆盖已有文件
                .enableFileOverride()
                // 开启 Lombok 模型
                .enableLombok()
                // entity模版
                .javaTemplate("/templates/model/request/deleteReq.java")
                // controller配置
                .controllerBuilder().disable()
                // service配置
                .serviceBuilder().disable()
                // mapper配置
                .mapperBuilder().disable())
            // 使用Freemarker引擎模板，默认的是Velocity引擎模板
            .templateEngine(new FreemarkerTemplateEngine());
    }

}
